Zorin OS 18 の bottles と Wine で GPSアプリを実行する

文字列の表記について
   [UserName] はユーザー名を表します(ユーザー名は、端末(ターミナル)を開いて whoami コマンドを実行して確認できます)
   [BottleName] はボトル名を表します(例:GPSutils)
1. bottles をインストールする
モニタ画面左下ダッシュボードのアイコンをクリックして「すべてのアプリ」をクリックし、
「Windows App Suport」 をクリックしてから「インストール(I)」 をクリックしてインストールします
   注 1)bottles をインストール済の場合は「Windows App Suport」は表示されません
   注 2)インストール後に起動メニュー「bottles」を右クリックして「ダッシュボードにピン止め」を実行すると以後の起動が素早く行えます

2. ボトルを作成して初期設定を行う
bottles を起動して画面上部の「ボトル」をクリック「新しいボトルを作成...」をクリックし、
「名前」に名称(例:GPSutils)を入力して「作成」をクリックします
   注 1)複数のボトルを作成してボトル毎に Wine の実行環境を設定することができます
   注 2)Documents などのフォルダはボトル毎に別フォルダが割り当てられ、レジストリもボトル毎に独立した設定になります

ボトル(例:GPSutils)に 日本語フォントをインストールする:
ボトルを選択し「オプション」の「依存関係」の矢印アイコン をクリック
「cjkfonts」の下向き矢印アイコン をクリックしてインストールします

レジストリの編集
注)使用するアプリケーションが シリアルポート COM33, COM34 を選択できる場合はレジストリの編集は不要です(当サイトのアプリは COM99 まで設定可能)
Linux の USBシリアルポート /dev/ttyUSB0 と /dev/ttyACM0 をボトル環境の COM1 とCOM2 にアサインする手順:
使用するボトルで「ツール」欄の「レジストリエディタ」のアイコン をクリックしてレジストリエディタを起動し
HKEY_LOCAL_MACHINE\Software\Wine\Ports に下記の文字列値を追加します
   COM1 REG_SZ /dev/ttyUSB0
   COM2 REG_SZ /dev/ttyACM0
「レジストリ(R)」→「終了(X)」 で終了します

注 1)
   ボトルのデフォルト設定では
     COM1~COM32 には /dev/ttyS0 ~ /dev/ttyS31
     COM33 には /dev/ttyUSB0
     COM34 には /dev/ttyACM0
   が割り当てられています
注 2)
   HKEY_LOCAL_MACHINE\Software\Wine\Ports に COMポートを追加すると /dev/ttyS0 以降の COM番号は追加分だけシフトされます
   上図の例では /dev/ttyS0 は COM3 に割り当てられます
参考)
   /dev/ttyUSB : USBシリアルポート(CP210X = FTDIチップ用:M-241など)
   /dev/ttyACM : USBシリアルポート(CDC-ACM = u-blox社製GPSなど)
   /dev/ttyS : RS-232Cシリアルポート

シリアルポートのパーミッション設定を行う(端末(ターミナル)を使用)
sudo chmod 666 /dev/ttyUSB0 や
sudo chmod 666 /dev/ttyACM0 のように設定します
再起動後も自動的にこの権限を適用するには
sudo nano /lib/udev/rules.d/50-udev-default.rules で
KERNEL=="tty[A-Z]*[0-9]|ttymxc[0-9]*|pppox[0-9]*|ircomm[0-9]*|noz[0-9]*|rfcomm[0-9]*", GROUP="dialout"
の行の末尾に , MODE="0666" を追加して
KERNEL=="tty[A-Z]*[0-9]|ttymxc[0-9]*|pppox[0-9]*|ircomm[0-9]*|noz[0-9]*|rfcomm[0-9]*", GROUP="dialout", MODE="0666"
に変更して Ctrl-O Ctrl-X で保存して終了します

GPSデバイスの認識確認
GPSデバイスをPCに接続し、端末(ターミナル)で下記のコマンドを実行してデバイスファイルを確認します
   sudo su
   dmesg | grep -e ttyUSB -e ttyACM
デバイス( ttyUSB0 または ttyACM0 )が正しく認識されていることを確認します
   /dev/ttyUSB0 の応答例:[ 415.589691] usb 1-2: cp210x converter now attached to ttyUSB0
   /dev/ttyACM0 の応答例:[ 416.543186] cdc_acm 1-1:1.0: ttyACM0: USB ACM device

3. ポータブルアプリケーションの登録
64bitアプリケーションの場合はディレクトリ
   /home/[UserName]/.var/app/com.usebottles.bottles/data/bottles/bottles/[BottleName]/drive_c/Program Files/
32bitアプリケーションの場合はディレクトリ
   /home/[UserName]/.var/app/com.usebottles.bottles/data/bottles/bottles/[BottleName]/drive_c/Program Files (x86)/
下に適切なディレクトリ(例: GPSutils)を作成してWindows用の実行ファイル(例: NMEA.exe)をコピーします
ボトルの「プログラム」欄の「+ショートカットを追加...」をクリックして Windows用の実行ファイル(例: NMEA.exe)を選択し
「追加」ボタンをクリックします

「プログラム」欄にショートカットが登録されるのでアイコン をクリックして実行できます
起動に失敗した場合はアイコンをクリックして実行を停止してから再起動を試してください


シリアルポートのオープン後に異常終了する場合の対策
「オプション」の「設定」をクリックし「コンポーネント」の「ランナー」を「soda-9.0-1」から
「Soda-experimental_8.0」または「sys-wine-10.0」などに変更して見てください


4. NMEA.exe の設定ファイル NMEA.ini について
NMEA.exe の本体はディレクトリ
/run/user/1000/doc/[16進文字列]/(および /run/user/1000/doc/by-app/com.usebottles.bottles/[16進文字列]/ )
にコピーされ、このディレクトリの .exe 以外のファイルはOSの再起動時に削除されるため設定ファイルを保持できません
   注)[16進文字列] は 7または8桁のランダムに見える文字値です
対策:
下記の手順で NMEA.exe のコマンドラインオプションに Documentsフォルダ内の NMEA.ini を指定して起動するように設定します
NMEA_Jp.ini を NMEA.ini にリネームして Windows の Documents に対応する下記のディレクトリ
/home/[UserName]/.var/app/com.usebottles.bottles/data/bottles/bottles/[BottleName]/drive_c/users/[UserName]/Documents/
にコピーします(注:ディレクトリはユーザー名とボトル毎に異なります)
ボトルの「プログラム」欄のNMEAショートカットの右端のアイコン をクリックして「プログラム起動オプションを変更..」をクリック
「独自の引数」の「コマンド引数」を c:\\users\\[UserName]\\Documents\\NMEA.ini に設定して「保存」をクリックします
これによって NMEA.exe の起動時に Windows の Documents相当ディレクトリ内の NMEA.ini を読み込む事が出来ます

参考
MtkDLut.exe などのアプリも「独自の引数」の「コマンド引数」を c:\\users\\[UserName]\\Documents\\MtkDLut.ini
のように設定するだけで設定データを Documents フォルダに保存できます

5. インストールタイプのアプリケーションの登録と実行
bottles を起動して必要に応じて新規ボトルを作成します
新規ボトルの場合は日本語フォントをインストールします
「実行可能ファイルを実行...」をクリックしてインストーラファイルを選択して「実行」ボタンをクリックします
「プログラム」欄にショートカットが登録されるのでクリックして実行できます
   注)インストーラファイルはUSBメモリ上でもOKです

6. Windowsアプリ上のフォルダとLinuxディレクトリの対応

Windows: c:\ProgramFiles\
Linux: ./.var/app/com.usebottles.bottles/data/bottles/bottles/[BottleName]/drive_c/Program Files/

Windows: c:\Program Files (x86)\
Linux: ./.var/app/com.usebottles.bottles/data/bottles/bottles/[BottleName]/drive_c/Program Files (x86)/

Windows: c:\users/[UserName]\Documents\
Linux: ./.var/app/com.usebottles.bottles/data/bottles/bottles/[BottleName]/drive_c/users/[UserName]/Documents/

Windows: c:\users\Public\Documents\
Linux: ./.var/app/com.usebottles.bottles/data/bottles/bottles/[BottleName]/drive_c/users/Public/Documents/


Home